/*******************************************************************************
 * Copyright (c) 2008, 2009 Fabio Mauro - Alberto Terraneo.
 * Permission is granted to copy, distribute and/or modify this document
 * under the terms of the GNU Free Documentation License, Version 1.2
 * or any later version published by the Free Software Foundation.
 *     
 * This program is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied 
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
 * See the GNU Free Documentation License for more details.
 *     
 * You should have received a copy of the GNU Free Documentation 
 * License along with this distribution; if not, send a email to authors:
 * aterraneo <at> users.sourceforge.net
 * bigmoby09 <at> users.sourceforge.net
 *******************************************************************************/
package it.blueocean.acanto.model.constants;

import java.util.ArrayList;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;

/**
 * Rappresenta la lista dei possibili valori assunti dallo status della classe <code>Famiglia</code> 
 * Possibili valori sono:
 * <blockquote>
 * <pre>
 * StatoFamiglia.TEMPORANEO
 * StatoFamiglia.DEFINITIVO
 * StatoFamiglia.ERRATO
 * </pre>
 * </blockquote>
 * 
 * @author Fabio Mauro
 */
public enum StatoFamiglia
{
	TEMPORANEO("Temporaneo"), DEFINITIVO("Definitivo"), SOSPESO("Sospeso");
	
	private final String valore;

	StatoFamiglia(String valore)
	{
		this.valore = valore;
	}

	public static List<StatoFamiglia> getListStatiFamiglia()
	{
		return new ArrayList<StatoFamiglia>(Collections
				.synchronizedSet(EnumSet.allOf(StatoFamiglia.class)));
	}
	
	public static List<String> getListStringStatiFamigliaEnumValues()
	{
		List<String> resultList = new ArrayList<String>();
		List<StatoFamiglia> list = StatoFamiglia.getListStatiFamiglia();
		for (StatoFamiglia statoFamiglia : list)
		{
			resultList.add(statoFamiglia.getValore());
		}
		return resultList;
	}
	
	
	public String getValore()
	{
		return valore;
	}
	
	public static int getIndex(String value)
	{
		List<StatoFamiglia> list = getListStatiFamiglia();
		for (StatoFamiglia item : list)
		{
			if(item.valore.equalsIgnoreCase(value))
				return item.ordinal();
		}
		return -1;
	}
	
	public static StatoFamiglia getFromValue(String value)
	{
		List<StatoFamiglia> list = getListStatiFamiglia();
		for (StatoFamiglia item : list)
		{
			if(item.valore.equalsIgnoreCase(value))
				return item;
		}
		return null;
	}
}
